Skip to content

《操作系统》第二学期期末试卷A (精选02)

🎯 试卷正文

一、 选择题(每题 1分,共 25分)

  1. 配置了操作系统的计算机是一台比原来的物理计算机功能更强的计算机,这样的一台计算机只是一台逻辑上的计算机,称为( )计算机。
  • A. 并行
  • B. 真实
  • C. 虚拟
  • D. 共享
查看答案与解析

答案:C

解析: 本题考查操作系统的基本概念与虚拟化特性。

详细推导:

  • 操作系统通过在底层物理硬件的基础上,增加各种资源管理与抽象软件层,使得用户不必直接操作复杂的物理硬件。
  • 这种基于物理机器、通过软件扩充而形成的、功能更强、使用更方便的计算机系统,在逻辑上被称为虚拟计算机(Virtual Machine)。

难度: ⭐ 考点: #操作系统概念 #虚拟计算机

💡 学习锦囊

📖 相关公式与知识点:

  • 操作系统的四大特性:并发、共享、虚拟、异步。
  • 虚拟技术:包括时分复用(如多道程序设计中的虚拟 CPU)和空分复用(如虚拟内存)。

思路分析

区分“真实”与“逻辑”计算机的关键在于软件的抽象层。软件扩充后的计算机通常被称为虚拟机或逻辑计算机。

🔄 举一反三
  1. 操作系统通过( )技术,使得一台物理 CPU 可以像多台逻辑 CPU 一样同时为多个用户服务。
    查看练习答案与解析

    答案:时分复用(或时间片轮转) 解析:这是 CPU 虚拟化的核心机制,通过极短的时间片段交替执行不同进程,实现宏观上的“并行”。

  2. 操作系统提供的空分复用虚拟技术,最典型的应用是( )。
    查看练习答案与解析

    答案:虚拟内存管理 解析:将有限的物理内存通过磁盘交换空间映射为极大的逻辑地址空间。

  1. 操作系统提供给程序员的接口是( )。
  • A. 进程
  • B. 系统调用
  • C. 库函数
  • D. B 和 C
查看答案与解析

答案:B

解析: 本题考查操作系统的接口类型。

详细推导:

  • 操作系统主要提供两类接口:
    1. 命令接口(提供给普通用户):包含联机命令和脱机命令。
    2. 程序接口(提供给程序员):由一系列系统调用(System Call)组成。
  • 程序员通过在代码中嵌入系统调用指令,请求操作系统内核提供特权服务。

难度: ⭐ 考点: #操作系统接口 #系统调用

💡 学习锦囊

📖 相关公式与知识点:

  • 系统调用:发生在访管中断(自陷/陷阱指令)后,CPU 由用户态(目态)转为核心态(管态)。
  • 库函数:运行在用户态,通常封装了系统调用以提高开发效率(如 printf 封装了 write 系统调用)。

思路分析

核心在于区分“操作系统提供的”与“编程语言/运行库提供的”。库函数是高层封装,系统调用才是 OS 底层提供的直接接口。

🔄 举一反三
  1. 运行系统调用指令时,CPU 的状态会发生怎样的改变?
    查看练习答案与解析

    答案:从用户态(目态)切换到核心态(管态/内核态)。 解析:系统调用涉及特权操作,必须在安全级别最高的核心态下执行,由中断处理程序进入。

  2. 下列不属于操作系统程序接口的是( )。
    • A. 联机命令接口
    • B. Linux 中的 POSIX API
    • C. Windows 的 Win32 API
    查看练习答案与解析

    答案:A 解析:联机命令接口是提供给终端用户的,程序员在代码里调用的是 API/系统调用(B、C 均为程序接口)。

  1. 在操作系统中引入多道程序设计的最主要目的在于( )。
  • A. 有利于代码共享,减少主、辅存信息交换量
  • B. 充分利用存储器
  • C. 充分利用 CPU,减少 CPU 等待时间
  • D. 提高实时响应速度
查看答案与解析

答案:C

解析: 本题考查多道程序设计的初衷与机制。

详细推导:

  • 在单道程序环境下,一旦程序进行 I/O 操作,CPU 就必须处于空闲等待状态,资源利用率极低。
  • 多道程序设计(Multiprogramming)允许多个作业同时驻留在主存中。当一个作业因 I/O 阻塞时,OS 调度另一个作业占用 CPU。这极大地提高了 CPU 的利用率并减少了等待闲置。

难度: ⭐ 考点: #多道程序设计 #CPU利用率

💡 学习锦囊

📖 相关公式与知识点:

  • 多道程序特性:多道、宏观并行、微观串行。
  • 代价:增加了系统的复杂性,需要处理同步、互斥及死锁等问题。

易错点

多道程序设计虽然能提升 CPU 利用率,但无法提供强力的“实时交互响应”,不要与“分时系统”或“实时系统”的主要目的混淆。

🔄 举一反三
  1. 多道程序环境下,当主存中作业数量过多时,系统的吞吐量可能会因为( )而急剧下降。
    查看练习答案与解析

    答案:抖动(Thrashing)或系统颠簸 解析:页面频繁置换导致 CPU 绝大部分时间在等待 I/O,而非有效执行计算。

  2. 引入多道程序设计后,程序失去了单道环境下的( )特性。
    查看练习答案与解析

    答案:封闭性与可再现性 解析:由于并发执行和资源共享,程序的执行结果可能受其他程序影响,表现出异步性。

  1. 在下面的 I/O 控制方式中,需要 CPU 干预最少的方式是( )。
  • A. 程序 I/O 方式
  • B. 中断驱动 I/O 控制方式
  • C. 直接存储器访问(DMA)控制方式
  • D. I/O 通道控制方式
查看答案与解析

答案:D

解析: 本题考查 I/O 控制方式的发展演变及 CPU 介入程度的比较。

详细推导:

  • A. 程序 I/O:CPU 采用轮询方式,干预最频繁。
  • B. 中断驱动:以字节为单位进行 I/O,每次传输完成向 CPU 发出中断申请。
  • C. DMA 方式:以“块”为单位进行传输,CPU 仅在传输开始和结束时介入。
  • D. 通道方式:通道拥有独立的指令体系。CPU 仅需发出一组通道控制命令,通道便能独立执行多个数据块的传输,干预最少。

难度: ⭐ 考点: #I/O控制方式 #通道控制

💡 学习锦囊

📖 相关公式与知识点:

  • 演进顺序:程序查询 -> 中断驱动 -> DMA -> 通道。
  • DMA 与通道区别:DMA 需要 CPU 分配总线并设置地址,只能传输连续块;通道可传输离散块且执行灵活的 I/O 程序。

思路分析

掌握各种控制方式中 CPU 的干预颗粒度:字/字节(中断) $\rightarrow$ 块(DMA) $\rightarrow$ 块组/复杂结构(通道)。

🔄 举一反三
  1. 在( )控制方式中,数据直接在外部设备与主存之间进行高速批量传输,不需要经过 CPU 寄存器。
    查看练习答案与解析

    答案:DMA(直接存储器访问) 解析:DMA 机制就是通过 DMA 控制器接管总线,越过 CPU 寄存器中转实现极速访存。

  2. 设备控制器内部主要由( )、( )和 I/O 逻辑三部分组成。
    查看练习答案与解析

    答案:控制寄存器、状态寄存器(或数据缓冲寄存器) 解析:寄存器组用于保存 CPU 发来的命令和当前设备状态。

  1. 在有 SPOOLing 系统的计算机中,处于后备状态的作业存放在( )中。
  • A. 卡片
  • B. 磁盘
  • C. 主存
  • D. 磁盘与主存
查看答案与解析

答案:B

解析: 本题考查假脱机技术(SPOOLing)的工作原理及物理存储。

详细推导:

  • SPOOLing 技术通过在**高速外存(通常为磁盘)**上开辟“输入井”和“输出井”,模拟传统脱机输入输出。
  • 处于后备状态的作业,其实质是被输入进程预先读入并暂存在磁盘的输入井中,等待作业调度程序将其调入内存执行。

难度: ⭐⭐ 考点: #SPOOLing系统 #输入井 #设备虚拟化

💡 学习锦囊

📖 相关公式与知识点:

  • SPOOLing 核心组成:输入井与输出井(磁盘上)、输入缓冲区与输出缓冲区(内存中)、输入进程与输出进程。
  • 主要作用:将独占设备改造为共享设备,实现虚拟分配。

易错点

注意区分输入井/输出井(在磁盘上)与输入/输出缓冲区(在主存中)。缓冲区起暂存中转作用,真正的后备队列落盘在输入井。

🔄 举一反三
  1. SPOOLing 技术最主要解决的问题是( )。
    查看练习答案与解析

    答案:低速 I/O 设备与高速 CPU 之间的速度不匹配,以及独占设备的共享化。 解析:利用磁盘的共享性和高速度,建立大容量软缓冲池。

  2. 打印机通常属于独占设备,但通过( )技术可以将其虚拟为共享设备。
    查看练习答案与解析

    答案:SPOOLing(假脱机) 解析:用户作业将打印请求直接输出至磁盘输出井,输出进程在后台按序控制物理打印机。

  1. 设备的打开、关闭、读、写等操作是由( )完成的。
  • A. 用户程序
  • B. 编译程序
  • C. 设备分配程序
  • D. 设备驱动程序
查看答案与解析

答案:D

解析: 本题考查操作系统 I/O 系统中设备驱动程序的核心功能。

详细推导:

  • 设备驱动程序(Device Driver)是 I/O 系统中直接与硬件交互的软件模块。
  • 它负责将上层发来的抽象 I/O 请求(如 read, write),转换为具体设备控制器能够理解的底层命令,从而实现对物理设备的打开、关闭、读和写。

难度: ⭐ 考点: #设备驱动程序 #I/O系统

💡 学习锦囊

📖 相关公式与知识点:

  • 驱动程序特点:与硬件高度相关,是内核的一部分,但常以模块形式动态加载。

思路分析

区分软件层次:用户层 I/O $\rightarrow$ 设备独立性软件 $\rightarrow$ 设备驱动程序 $\rightarrow$ 中断处理程序 $\rightarrow$ 硬件。

🔄 举一反三
  1. 当用户程序发起读取磁盘操作时,负责在设备与内存之间传输数据的程序是( )。
    查看练习答案与解析

    答案:设备驱动程序 解析:驱动程序配置 DMA 或执行指令实现最终的数据传输控制。

  2. 操作系统引入了( )软件层,从而使得用户能够编写与具体物理设备型号无关的代码。
    查看练习答案与解析

    答案:设备独立性软件(或独立于设备的 I/O 软件) 解析:通过逻辑设备名到物理设备名的映射实现设备无关性。

  1. 文件在磁带上能组织成( )。
  • A. 顺序结构
  • B. 链接结构
  • C. 索引结构
  • D. 以上均可
查看答案与解析

答案:A

解析: 本题考查存储介质的物理特性对文件结构设计的约束。

详细推导:

  • 磁带是一种典型的顺序存取介质
  • 在磁带上,数据只能按照物理先后顺序依次读写,无法像磁盘一样进行高速的随机定位。因此,磁带上的文件只能组织成顺序物理结构

难度: ⭐ 考点: #文件物理结构 #磁带 #顺序存取

💡 学习锦囊

📖 相关公式与知识点:

  • 文件物理结构对比
    • 顺序结构:支持顺序存取,存储空间紧凑,但在磁带上无法随机存取。
    • 链接结构:仅支持顺序存取,不能随机存取,解决了零碎外部碎片问题。
    • 索引结构:同时支持顺序和随机存取,但开销大。

思路分析

牢记物理介质决定物理结构:磁带 $\rightarrow$ 顺序;磁盘 $\rightarrow$ 均可。

🔄 举一反三
  1. 若一个磁盘上的文件采用了隐式链接分配策略,当我们要读取该文件的第 $n$ 个物理块时,需要启动磁盘( )次。
    查看练习答案与解析

    答案$n$解析:隐式链接物理块中保存下一个块的指针,只能像单链表一样通过指针逐块往下找。

  2. 适用于文件极度频繁随机存取的物理存储结构是( )。
    查看练习答案与解析

    答案:索引结构或连续结构 解析:连续结构可直接通过计算地址随机存取;索引结构可通过查索引表随机定位。

  1. 现代操作系统具有并发性和共享性,是( )的引入导致的。
  • A. 单道程序
  • B. 磁盘
  • C. 对象
  • D. 多道程序
查看答案与解析

答案:D

解析: 本题考查操作系统最基本的两个特征(并发与共享)的产生原因。

详细推导:

  • 在单道程序环境下,资源被独占,程序顺序串行执行。
  • 引入多道程序设计后,多个作业共享系统中的硬件和软件资源,宏观上同时在系统中向前推进(并发)。因此,多道程序的引入直接促成了并发性共享性

难度: ⭐ 考点: #操作系统特性 #并发与共享 #多道程序

💡 学习锦囊

📖 相关公式与知识点:

  • 并发:一段时间内宏观上有多道程序同时运行,微观上交替运行。
  • 共享:系统中的资源供多个并发执行的进程共同使用。

思路分析

并发与共享是操作系统最基本的两个特征,它们互为存在条件,且都是多道程序并发执行的必然产物。

🔄 举一反三
  1. 操作系统的并发性与并行性有何本质区别?
    查看练习答案与解析

    答案:并发指微观上交替执行(分时),并行指微观上真正同时执行(多核)。 解析:并发是逻辑上的“同时”,并行是物理上的“同时”。

  2. 共享资源在进程调度时,最常发生的问题是( )。
    查看练习答案与解析

    答案:竞争条件(Race Condition)或死锁 解析:不加控制的共享会导致同步互斥异常及资源争夺。

  1. Linux 系统采用的内核结构模型是( )。
  • A. 整体式结构
  • B. 模块化结构
  • C. 层次结构
  • D. 微内核结构
查看答案与解析

答案:A

解析: 本题考查操作系统的内核体系架构。

详细推导:

  • 整体式结构(Monolithic Kernel,也称宏内核/单内核)将操作系统的所有核心服务(如进程管理、文件系统、I/O 驱动)全放在一个巨大的内核空间中运行。
  • Linux 尽管支持动态加载模块(LKM),但其底层架构依然属于经典的整体式结构,以获取极致的执行效率。

难度: ⭐ 考点: #操作系统架构 #宏内核 #Linux内核

💡 学习锦囊

📖 相关公式与知识点:

  • 微内核(Microkernel):只把最基本的服务(如进程通信、低级内存管理)放内核,其余放用户态,安全可靠但开销大(如 Mach, OpenEuler 的某些设计)。

易错点

极易被 Linux 的“动态加载模块特性”误导选 B。动态模块是实现方式,Linux 的架构本质上还是 Monolithic(宏内核)。

🔄 举一反三
  1. 相比于微内核,宏内核(整体式内核)的最大性能优势来源于什么?
    查看练习答案与解析

    答案:极少发生用户态与内核态的上下文切换。 解析:微内核服务之间调用需要频繁跨越特权态,耗费大量时钟周期。

  2. 下列采用微内核结构的操作系统是( )。
    • A. MS-DOS
    • B. 早期的 Windows NT
    • C. 华为鸿蒙(HarmonyOS)
    查看练习答案与解析

    答案:C 解析:鸿蒙、QNX 等实时嵌入式 OS 常采用微内核实现高可靠性。

  1. ( )不是分时系统的基本特征。
  • A. 同时性
  • B. 独立性
  • C. 实时性
  • D. 交互性
查看答案与解析

答案:C

解析: 本题考查分时系统的特征分类。

详细推导:

  • 分时系统的典型四大特征是:
    1. 同时性(多路性):多用户共用一台计算机。
    2. 交互性:人机能够快速对话。
    3. 独立性:用户感觉自己独占主机。
    4. 及时性:系统在极短时间内响应。
  • 实时性是属于实时操作系统(RTOS)的专属特征(强调在严格限时内完成任务)。

难度: ⭐ 考点: #分时系统 #操作系统类型

💡 学习锦囊

📖 相关公式与知识点:

  • 分时系统依靠时间片轮转实现多用户并发。

思路分析

从“实时性”的定义入手,实时强调的是可预测的绝对截止时间(Deadline),分时系统则重在“响应体验快”。

🔄 举一反三
  1. 实时系统根据对截止时间的要求严格程度,可分为( )和( )。
    查看练习答案与解析

    答案:硬实时系统、软实时系统 解析:硬实时不允许错过任何截止期;软实时偶尔错过仅降低服务质量。

  2. 分时系统的时间片大小通常与( )和( )成正比。
    查看练习答案与解析

    答案:系统响应时间、内存中作业数目 解析:根据公式 $T = N \times q$,时间片 $q$ 受系统承受的并发数量与总响应时长影响。

  1. 下列关于进程的叙述中,正确的是( )。
  • A. 进程获得 CPU 运行是通过进程调度得到的
  • B. 优先级是进程调度的重要依据,一旦确定就不能改变
  • C. 单 CPU 的系统中,任意时刻都有一个进程处于运行状态
  • D. 进程申请 CPU 得不到满足,其状态变为阻塞。
查看答案与解析

答案:A

解析: 本题考查进程的状态转换与进程调度的基本原理。

详细推导:

  • A 对:就绪状态的进程只有在经过进程调度程序分配了 CPU 时间片后,才能进入运行态。
  • B 错:在动态优先级调度算法中,优先级可以随等待时间或执行时间动态改变。
  • C 错:如果系统中所有进程都在等待 I/O(即都处于阻塞态),此时 CPU 运行的是空闲进程(Idle),并不处于真正的“工作作业运行”状态。
  • D 错:就绪进程申请 CPU 未得到满足,状态依然为就绪态,而非阻塞态(阻塞态对应等待除 CPU 以外的某种资源/事件)。

难度: ⭐ 考点: #进程状态转换 #进程调度

💡 学习锦囊

📖 相关公式与知识点:

  • 三态模型:就绪、运行、阻塞。
  • 就绪 $\rightarrow$ 运行:进程调度。
  • 运行 $\rightarrow$ 就绪:时间片用完/被更高优先级剥夺。
  • 运行 $\rightarrow$ 阻塞:等待某事件(如申请资源、I/O)。
  • 阻塞 $\rightarrow$ 就绪:等待事件完成。

易错点

一定要区分“就绪态”与“阻塞态”的区别:就绪是万事俱备只欠 CPU,而阻塞是还缺 CPU 以外的资源

🔄 举一反三
  1. 处于就绪状态的进程,在它的( )被分配后,才能转换为执行状态。
    查看练习答案与解析

    答案:处理机(CPU)

  2. 进程从运行态变为阻塞态,通常是由于( )引起的。
    查看练习答案与解析

    答案:请求资源失败、等待 I/O 完成、或显式调用 sleep/wait 指令。

  1. 在一个交通繁忙的十字路口,每个方向只有一个车道,如果车辆只能向前行驶,而不允许转弯和后退,并未采用任何方式进行交通管理。下列叙述正确的是( )。
  • A. 该十字路口不会发生死锁
  • B. 该十字路口一定会发生死锁
  • C. 该十字路口可能会发生死锁,规定同时最多 3 个方向的车使用该十字路口是最有效的方法
  • D. 该十字路口可能会发生死锁,规定南北方向的两个车队和东西方向的两个车队互斥使用十字路口是最有效的方法
查看答案与解析

答案:D

解析: 本题以现实交通类比操作系统中的死锁预防避免机制。

详细推导:

  • 四个方向同时有车开入路口并互相阻塞,会形成循环等待,从而可能发生死锁。
  • 采取“破坏循环等待”或“限制资源分配”均能预防死锁。
  • 选项 D 通过严格划定车队互斥访问(南北一组,东西一组),直接消除了路口四个方向同时占用的冲突可能,在题目给定的无限制情况下是最有效实现互斥与安全通行的规避方案。

难度: ⭐⭐ 考点: #死锁 #死锁预防 #循环等待

💡 学习锦囊

📖 相关公式与知识点:

  • 死锁的四个必要条件:互斥、请求与保持、不可剥夺、循环等待。
  • 预防死锁的方法:破坏必要条件(如资源按序分配破坏循环等待)。

思路分析

死锁的核心在于“环路等待”。打破了环路,死锁就无法发生。

🔄 举一反三
  1. 哲学家进餐问题中,为了防止死锁,可以采取的策略是( )。
    查看练习答案与解析

    答案:限制同时进餐的人数(最多4人),或奇数号先拿左再拿右、偶数号相反。 解析:本质也是破坏循环等待。

  2. 死锁避免算法中最著名的算法是 Dijkstra 提出的( )算法。
    查看练习答案与解析

    答案:银行家算法

  1. 在支持多线程的系统中,进程 P 创建的若干个线程不能共享的是( )。
  • A. 进程 P 的代码段
  • B. 进程 P 中打开的文件
  • C. 进程 P 的全局变量
  • D. 进程 P 中某线程的栈指针
查看答案与解析

答案:D

解析: 本题考查进程与线程在资源分配和管理上的界限。

详细推导:

  • 线程是处理机调度的基本单位,进程是资源分配的基本单位。
  • 线程共享其所属进程的所有全局资源,包括:代码段(A)、全局数据段/全局变量(C)、打开的文件列表(B)等。
  • 线程的私有资源包括:线程 ID、程序计数器(PC)、寄存器集合、以及独立的栈指针(Stack Pointer),用于维护自身的函数局部调用状态。

难度: ⭐ 考点: #线程私有资源 #线程共享

💡 学习锦囊

📖 相关公式与知识点:

  • 线程共享:堆、全局变量、静态变量、打开的文件。
  • 线程私有:栈(局部变量)、寄存器(上下文)、PC 计数器。

思路分析

要快速识别线程私有资源,记住凡是与独立指令执行流强相关的(如正在执行到哪一步、局部变量是谁)都是私有的。

🔄 举一反三
  1. 线程管理可以在用户空间或内核空间实现,分别称为( )和( )。
    查看练习答案与解析

    答案:用户级线程(ULT)、内核级线程(KLT)

  2. 两个线程因为需要修改同一个进程内的全局变量而发生数据不一致,这需要引入( )机制来解决。
    查看练习答案与解析

    答案:线程同步或互斥(如互斥锁 Mutex)

  1. 一个多道批处理系统中仅有 P1 和 P2 两个作业,P2 比 P1 晚 5ms 到达,它的计算和 I/O 操作顺序如下: P1:计算 60ms,I/O 80ms,计算 20ms P2:计算 120ms,I/O 40ms,计算 40ms 若不考虑调度和切换时间,则完成两个作业需要的时间最少是( )。
  • A. 240ms
  • B. 260ms
  • C. 340ms
  • D. 360ms
查看答案与解析

答案:B

解析: 本题属于多道批处理系统的并发时序分析题。

详细推导: 我们可以画出 CPU 与 I/O 设备的时间甘特图:

  • 0~5ms:P1 在 CPU 执行(完成 5ms,剩余 55ms)。P2 此时未到达。
  • 5ms:P2 到达,进入就绪队列。
  • 5~60ms:P1 继续在 CPU 计算(P1 计算完毕,耗时 60ms),P2 处于就绪等待态。此时 P1 发起 I/O 80ms(执行区间:60ms $\rightarrow$ 140ms)。
  • 60~140ms:P2 抢占 CPU 计算。P2 需要 120ms(执行区间:60ms $\rightarrow$ 180ms)。
    • 期间 140ms:P1 的 I/O 结束,进入就绪队列等待 CPU。
  • 180~200ms:P2 在 180ms 时 CPU 计算完毕,发起 I/O 40ms(执行区间:180ms $\rightarrow$ 220ms)。此时 CPU 空闲,调度 P1 执行剩余的 20ms 计算。P1 执行区间为 180ms $\rightarrow$ 200ms,P1 在 200ms 时刻全部完成
  • 200~220ms:CPU 空闲。P2 在 220ms 时 I/O 完毕,申请最后的 40ms 计算。
  • 220~260ms:P2 占用 CPU 计算 40ms。P2 在 260ms 时刻全部完成。 综上,完成两作业最少总时长为 260ms

难度: ⭐⭐⭐ 考点: #甘特图 #并发时序分析 #多道批处理

💡 学习锦囊

📖 相关公式与知识点:

  • 计算甘特图时遵循原则:
    • CPU 与 I/O 设备可并行。
    • 同一时刻只有一个作业能占用 CPU(非抢占或按需调度)。
    • 计算和 I/O 是交替串行进行的。

思路分析

遇到此类题目,务必在草稿纸上严格画出时间轴。时刻关注“I/O 结束时刻”与“CPU 空闲时刻”。

🔄 举一反三
  1. 假设作业仅需 CPU 计算 50ms 和 I/O 50ms。多道环境下两道同时到达,则总耗时为( )ms。
    查看练习答案与解析

    答案:150ms 解析:0-50ms P1计算(P2等),50-100ms P1 IO(P2计算),100-150ms P2 IO。

  1. 在 ps 命令中什么参数是用来显示所有用户的进程( )。
  • A. a
  • B. b
  • C. u
  • D. x
查看答案与解析

答案:A

解析: 本题考查 Linux 运维常用指令 ps 的参数选项。

详细推导:

  • ps(Process Status)是 Linux 中查看进程状态的指令。
  • 参数 -a(all)代表显示现行终端机下的所有程序,包括其他用户的程序。
  • 常搭配参数 u(以用户为主的格式输出)及 x(显示没有控制终端的进程),形成经典指令 ps -aux

难度: ⭐ 考点: #Linux命令 #ps进程查看

💡 学习锦囊

📖 相关公式与知识点:

  • 常用组合
    • ps -ef:采用标准格式显示所有进程。
    • ps aux:采用 BSD 格式显示所有进程。

思路分析

记住 a 对应 all,专门解决跨用户显示问题。

🔄 举一反三
  1. 在 Linux 中,若想动态实时查看系统进程的资源占用情况,应使用( )命令。
    查看练习答案与解析

    答案top

  2. 使用 kill -9 <PID> 命令发送的信号是( )。
    查看练习答案与解析

    答案:SIGKILL(强行终止信号)

  1. 在 Linux 中,进程优先级的相关参数有多个,与实时进程优先级相关的参数是( )。
  • A. policy
  • B. counter
  • C. priority
  • D. rt_priority
查看答案与解析

答案:D

解析: 本题考查 Linux 内核中调度相关的进程控制块(task_struct)字段。

详细推导:

  • Linux 的调度策略区分普通进程与实时进程。
  • rt_priority 字段专门用于存储实时进程的优先级,其值在 $0 \sim 99$ 之间,数值越大优先级越高(与普通进程相反)。

难度: ⭐⭐ 考点: #Linux进程控制块 #进程调度 #实时进程

💡 学习锦囊

📖 相关公式与知识点:

  • 实时调度策略SCHED_FIFO(先进先出)、SCHED_RR(时间片轮转)。

易错点

初学者容易混淆 Linux 静态优先级 priority(普通进程)和实时优先级 rt_priority。在实时进程中,rt_priority 起主导作用。

🔄 举一反三
  1. 在 Linux 中,普通进程默认的调度算法策略是( )。
    查看练习答案与解析

    答案SCHED_OTHER(完全公平调度 CFS)

  1. 关于 Linux 系统的目录文件的权限,以下说法错误的是( )。
  • A. 执行权限允许用户搜索该目录
  • B. 读权限允许用户进入该目录读取目录中的文件名、文件大小等属性信息
  • C. 写权限允许用户在该目录下面创建和删除文件
  • D. 执行权限允许用户进入该目录
查看答案与解析

答案:B

解析: 本题考查文件系统中的目录权限控制。

详细推导:

  • A/D 对:目录的执行权限 x 代表“进入并搜索目录”的权利。没有 x 权限,用户无法 cd 进入该目录。
  • C 对写权限 w 代表可以在目录中新增或删除目录项。
  • B 错:目录的读权限 r 仅允许用户获取目录中包含的文件名列表,但若要获取文件的大小、属性等详细 inode 元数据信息,必须配合执行权限 x。单纯有 r 而无 x 是无法“读取属性信息”的。

难度: ⭐⭐ 考点: #文件系统 #Linux目录权限

💡 学习锦囊

📖 相关公式与知识点:

  • r (Read):列出目录下的文件名。
  • w (Write):增删改目录下的文件。
  • x (Execute):进入目录并在该目录下执行指令。

思路分析

如果只有 r 没有 x,你就像站在橱窗外,只能看到货物的名字,却无法走近去查看价签或拿到货物。

🔄 举一反三
  1. 假设一个用户对目录 /data 仅具有 w 权限,无 rx 权限。请问该用户能否删除 /data/test.txt 文件?
    查看练习答案与解析

    答案:不能。 解析:因为定位到该文件需要 x(进入/搜索)权限。

  1. 某文件有 1000 条记录,采用索引顺序文件,每组记录为 100 条,则查找一条记录平均需要查找( )记录。
  • A. 500
  • B. 50
  • C. 55
  • D. 100
查看答案与解析

答案:C

解析: 本题考查索引顺序文件的顺序查找效率计算。

详细推导:

  1. 1000 条记录,每组 100 条,共可划分为 $1000 / 100 = 10$ 个分组。
  2. 建立一级索引表,索引表共有 10 个索引项。
  3. 查找过程分两步
    • 第一步:在索引表中顺序查找匹配的分组。平均查找长度 $L_1 = (1 + 10) / 2 = 5.5$ 次。
    • 第二步:在对应分组内顺序查找目标记录。平均查找长度 $L_2 = (1 + 100) / 2 = 50.5$ 次。
  4. 总平均查找长度 = $L_1 + L_2 = 5.5 + 50.5 = 56$ 次。 注:在部分教材计算规则中,假设各概率均匀且不考虑查找失败,简记公式为 $\frac{N}{2n} + \frac{n}{2} = \frac{10}{2} + \frac{100}{2} = 55$

难度: ⭐⭐ 考点: #索引顺序文件 #平均查找长度(ASL)

💡 学习锦囊

📖 相关公式与知识点:

  • 顺序查找的平均查找长度:$ASL = \frac{n+1}{2}$
  • 索引顺序文件 $ASL = \frac{\text{块数}+1}{2} + \frac{\text{块内记录数}+1}{2}$

思路分析

先查目录块(组),再查块内内容。

🔄 举一反三
  1. 若 10000 条记录,采用两级索引顺序文件,每级均等划分,则理论上最少平均需要查找多少次?
    查看练习答案与解析

    答案:约 33 次 解析:划分成 $10000^{1/3} \approx 21$。总开销为 $\frac{21}{2} \times 3 \approx 31.5$

  1. 如果一个文件存放在 100 个数据块中,文件索引信息都在内存中,如果不考虑索引信息的保存,则( )不需要做任何磁盘 I/O 操作。
  • A. 采用连续分配策略,将最后一个数据块搬到文件头部
  • B. 采用单级索引分配策略,将最后一个数据块搬到文件头部
  • C. 采用隐式链接分配策略,将最后一个数据块搬到文件头部
  • D. 采用隐式链接分配策略,将第一个数据块插入文件尾部
查看答案与解析

答案:B

解析: 本题考查文件物理分配策略对增删改数据块操作的 I/O 开销影响。

详细推导:

  • B. 单级索引分配:由于所有索引表信息均常驻在内存中,对文件的增删改操作只需修改内存中的索引项指针即可。物理块在磁盘上的相对位置无需发生任何实际搬移,也不必进行多余的磁盘读取写入。
  • 其他策略:连续分配(A)需实际搬运数据块;链接分配(C、D)若未持有对应磁盘块地址,需多次读盘追踪链表。

难度: ⭐⭐⭐ 考点: #文件物理分配 #单级索引 #磁盘IO

💡 学习锦囊

📖 相关公式与知识点:

  • 索引分配的核心优势:逻辑块号到物理块号的转换在内存中瞬间完成,无需读取中间数据块。

思路分析

把握住关键题干信息——“索引信息都在内存中”。

🔄 举一反三
  1. 单级索引分配中,若索引块的大小为一个物理块,能够支持的最大文件长度取决于( )。
    查看练习答案与解析

    答案:盘块大小除以索引项字节数。

  1. 在 OpenEuler 系统中,索引节点中通常不包括( )。
  • A. 文件名
  • B. 物理地址
  • C. 文件长度
  • D. 存取权限
查看答案与解析

答案:A

解析: 本题考查 Unix/Linux 文件系统 inode 索引节点的元数据结构。

详细推导:

  • 为了提高目录检索速度,Unix 类操作系统采用文件名与属性分离的方式。
  • 文件名存放在**目录项(Directory Entry / dentry)**中。
  • 索引节点 inode 中存储文件本身的属性(如长度、物理块地址、权限、所有者、时间戳等),唯独不包含文件名

难度: ⭐ 考点: #inode #目录项 #文件名检索

💡 学习锦囊

📖 相关公式与知识点:

  • 目录项内容:文件名 + inode 编号。
  • inode 内容:文件类型、权限、硬链接数、UID/GID、Size、时间戳、Disk block 指针。

易错点

牢记 inode 里绝对没有文件名!文件名是放在目录文件中用于检索映射的。

🔄 举一反三
  1. 对文件执行硬链接命令 ln file1 file2 后,file1file2 拥有相同的( )。
    查看练习答案与解析

    答案inode 编号 解析:硬链接本质是两个文件名指向同一个底层索引节点。

  1. 一个磁盘分区大小为 30GB,若盘块大小为 4KB,则该磁盘分区的 FAT 表大小为( )。
  • A. 30MB
  • B. 7.5MB
  • C. 22.5MB
  • D. 4KB
查看答案与解析

答案:C

解析: 本题考查文件分配表(FAT)的大小估算。

详细推导:

  1. 计算磁盘盘块总数
    $$\text{总块数} = \frac{30\text{ GB}}{4\text{ KB}} = \frac{30 \times 2^{30}\text{ B}}{4 \times 2^{12}\text{ B}} = \frac{30 \times 2^{30}}{2^{14}} = 7.5 \times 2^{20}\text{ 块} = 7.5\text{ M块}$$
  2. 计算 FAT 表项占用字节数: 本题预设的 FAT 表项大小为 3 字节(24 位)
  3. 计算 FAT 表总大小: $$\text{FAT 大小} = \text{总块数} \times \text{每个表项大小} = 7.5\text{ M块} \times 3\text{ B} = 22.5\text{ MB}$$。

难度: ⭐⭐⭐ 考点: #FAT表 #磁盘容量计算

💡 学习锦囊

📖 相关公式与知识点:

  • FAT 表项大小乘以磁盘盘块数等于 FAT 表大小。

思路分析

在没有显式给定表项位宽的情况下,选项中的数值 $7.5\text{MB} \times 3 = 22.5\text{MB}$ 透露出表项按 3 字节计算的理论假定。

🔄 举一反三
  1. 若 FAT 表项为 4 字节(32 位),计算同等条件下 FAT 表的总大小。
    查看练习答案与解析

    答案:30MB 解析$7.5\text{M} \times 4\text{B} = 30\text{MB}$

  1. 针对 32 位的 Linux 系统,关于其虚拟地址空间的说法中正确的是( )。
  • A. 0~3GB-1 是用户空间
  • B. 3GB~4GB-1 是用户空间
  • C. 0~3GB-1 是内核空间
  • D. 0~4GB-1 是用户空间
查看答案与解析

答案:A

解析: 本题考查 32 位 Linux 虚拟地址空间划分规则。

详细推导:

  • 32 位系统最大寻址范围为 $2^{32} = 4\text{GB}$
  • Linux 默认按照 3:1 划分这 4GB 空间:
    • 0 ~ 3GB-1(前 3GB)分配给用户空间(User Space)。
    • 3GB ~ 4GB-1(高位 1GB)分配给内核空间(Kernel Space)。

难度: ⭐ 考点: #虚拟地址空间 #Linux内存模型

💡 学习锦囊

📖 相关公式与知识点:

  • $2^{32}\text{ B} = 4\text{ GB}$

思路分析

32 位 Linux 内存划分属于常考的操作系统基础常识题。

🔄 举一反三
  1. 在 32 位 Linux 系统中,内核空间的大小是( )。
    查看练习答案与解析

    答案:1GB

  1. 有一个矩阵大小为 100 行 $\times$ 200 列,即 a[100][200],在一个虚拟系统中采用 LRU 置换算法。系统分给该进程 5 个页面来存储数据(不包含程序),设每页可存放 200 个整数,该程序要对整个数组初始化,数组存储是按行存放的。则下面程序的缺页次数是( )。(假定所有页都以请求方式调入)
c
for (i = 0; i <= 99; i++)
    for (j = 0; j <= 199; j++)
        a[i][j] = i * j;
  • A. 100
  • B. 200
  • C. 20000
  • D. 不确定
查看答案与解析

答案:A

解析: 本题考查虚拟内存管理中的页面置换与程序局部性原理。

详细推导:

  1. 数组在内存中的分布:数组大小为 100 * 200,按行优先存放。每行包含 200 个整数。
  2. 页面与数组的对应关系:由于每页恰好存放 200 个整数,因此数组的每一行恰好独占一个物理页面。总共需要 100 个页面。
  3. 执行流程分析
    • 循环按照 i=0, 1, 2...99 的行序依次访问数组。
    • 当访问第 $i$ 行时,整个访问均在同一个页面中进行。
    • 在首次访问该行的第 0 个元素时触发缺页中断
    • 总共 100 行,按序访问 100 个不同的页面,共发生 100 次缺页。

难度: ⭐⭐ 考点: #缺页中断 #LRU算法 #按行优先

💡 学习锦囊

📖 相关公式与知识点:

  • 程序在访问未调入主存的页面时,会产生缺页中断(Page Fault)。

易错点

本题若是“按列优先”循环访问,则外层是 j,内层是 i,每次循环均换页,缺页数将急剧上升为 $100 \times 200 = 20000$ 次!

🔄 举一反三
  1. 保持题设不变,若将循环嵌套顺序调换为外层 j,内层 i,缺页中断次数为多少?
    查看练习答案与解析

    答案:20000 解析:由于物理上按行存放,列优先访问会导致元素跳跃访问不同页面,发生灾难性抖动。

  1. 以下方法中不能有效预防抖动的是( )。
  • A. 采取局部置换策略
  • B. 引入工作集的概念
  • C. 挂起若干进程
  • D. 创建更多进程
查看答案与解析

答案:A

解析: 本题考查抖动(Thrashing,系统颠簸)的预防方法。

注:在原卷答案设计中,D. 创建更多进程 作为破坏多道程序度的操作,是引发抖动的元凶;而选项 A 采取局部置换策略 能够在一定程度上防范进程间的缺页涟漪反应,故 D 是最确切的“不能预防”的手段。


难度: ⭐ 考点: #抖动 #工作集

💡 学习锦囊

📖 相关公式与知识点:

  • 工作集:进程在某段时间内实际访问的页面的集合。

易错点

创建更多进程会导致内存竞争更激烈,百分之百恶化抖动。

🔄 举一反三
  1. 抖动产生的根本原因是什么?
    查看练习答案与解析

    答案:分配给进程的物理页面数不足以容纳其当前的工作集。

  1. 在下列几种动态分区分配算法中,最容易产生外部碎片的算法是( )。
  • A. 首次适应算法
  • B. 循环首次适应算法
  • C. 最佳适应算法
  • D. 最坏适应算法
查看答案与解析

答案:C

解析: 本题考查动态分区分配算法的内存碎片特性。

详细推导:

  • 最佳适应算法(Best Fit)每次都寻找与请求大小最接近的空闲分区进行分配。
  • 这种分配方式切割完大分区后,往往会残留极其细小的、无法再被任何作业利用的“边角料”,从而产生最多的外部碎片

难度: ⭐ 考点: #动态分区分配 #外部碎片 #最佳适应算法

💡 学习锦囊

📖 相关公式与知识点:

  • 首次适应(First Fit)、最佳适应(Best Fit)、最坏适应(Worst Fit)。

思路分析

“最佳”意味着切得太贴合,切剩的碎片自然最小,小到无法被再次利用。

🔄 举一反三
  1. 最不易产生外部碎片、留下的剩余空闲区最均匀的动态分配算法是( )。
    查看练习答案与解析

    答案:最坏适应算法(Worst Fit)


二、 综合题(共 75 分)

  1. (6 分)请详细分析引入缓冲的主要原因。(可以加入量化比较)
查看答案与解析

评分标准

  • 缓和 CPU 与 I/O 设备间速度不匹配矛盾(2分)
  • 减少对 CPU 的中断频率,放宽对 CPU 中断响应时间的限制(2分)
  • 提高 CPU 和 I/O 设备之间的并行性(2分)

答题区域: [在此处输入你的答案]

标准答案: 引入缓冲区(Buffering)的主要原因包括:

  1. 缓和 CPU 与 I/O 设备间速度不匹配的矛盾:例如,CPU 处理数据的速度极快(纳秒级),而打印机等外设输出极慢(毫秒级)。通过缓冲区中转,CPU 可迅速将数据写入后继续执行,不必同步阻塞等待。
  2. 减少对 CPU 的中断频率:如果不设缓冲,外设每传输一个字节都会向 CPU 发出一次中断。引入缓冲后,外设可攒够一批数据(如一个物理块)再引发中断。
  3. 提高 CPU 和 I/O 设备之间的并行性:双方可独立对同一个缓冲区的不同区域进行读写,实现真正的流水线作业。

量化比较示例: 假设 CPU 写入一个字节需 1 $\mu s$,I/O 设备打印一个字节需 100 $\mu s$。如果不设缓冲,CPU 写入后必须等待 100 $\mu s$,总时间为 101 $\mu s$,CPU 利用率仅 $\approx 0.99\%$。 若引入单缓冲区,CPU 花 1 $\mu s$ 将字节丢入缓冲即可离开;I/O 设备独立花 100 $\mu s$ 从缓冲中取出并打印。此时 CPU 并行处理其他任务,利用率显著提升。


难度: ⭐⭐ 考点: #I/O缓冲 #CPU利用率 #速度匹配

💡 学习锦囊

📖 相关公式与知识点:

  • 单缓冲$Max(C, T) + M$
  • 双缓冲$Max(C, T)$

思路分析

  1. 抓住核心矛盾:CPU 的快与外设的慢。
  2. 从硬件中断开销与 CPU 占用时长进行量化思考。

易错点

要从“时间并行性”和“硬件中断开销”两个维度深度剖析。

🔄 举一反三
  1. 什么是双缓冲区?相比单缓冲的优势是什么?
    查看练习答案与解析

    答案:双缓冲即设置两个缓冲区。当输入设备向缓冲A输入时,CPU 可从缓冲B提取数据处理,进一步提高了并行度。

  1. (14分)如下图所示,有三个进程 input、output 和 trans 以及两对供存取数据的单缓冲 IN1、IN2 和 OUT1、OUT2,input 进程把数据交替输入 IN1 和 IN2 中,output 交替输出 OUT1 和 OUT2 中的数据。trans 交替地把 IN1 中的数据变换后送入 OUT1,把 IN2 中的数据变换后送入 OUT2。请用信号量的 P、V 操作实现三个进程的并发执行过程。
查看答案与解析

评分标准

  • 正确声明 8 个信号量并赋予初值(4分)
  • input 进程 P/V 顺序正确(3分)
  • trans 进程 P/V 顺序正确(4分)
  • output 进程 P/V 顺序正确(3分)

答题区域

c
// 在此处书写你的 P/V 操作代码

标准答案

c
/* 定义空闲缓冲区信号量(初始为 1 代表可用) */
semaphore in1_empty = 1, in2_empty = 1;
semaphore out1_empty = 1, out2_empty = 1;

/* 定义满缓冲区信号量(初始为 0 代表无数据) */
semaphore in1_full = 0, in2_full = 0;
semaphore out1_full = 0, out2_full = 0;

main() {
    cobegin {
        input() {
            while(1) {
                /* 处理第 1 组缓冲 */
                P(in1_empty);
                将数据输入到 IN1 中;
                V(in1_full);
                
                /* 处理第 2 组缓冲 */
                P(in2_empty);
                将数据输入到 IN2 中;
                V(in2_full);
            }
        }
        
        trans() {
            while(1) {
                /* 处理 IN1 到 OUT1 */
                P(in1_full);
                从 IN1 取出数据并变换;
                V(in1_empty);
                P(out1_empty);
                将变换后数据放入 OUT1;
                V(out1_full);
                
                /* 处理 IN2 到 OUT2 */
                P(in2_full);
                从 IN2 取出数据并变换;
                V(in2_empty);
                P(out2_empty);
                将变换后数据放入 OUT2;
                V(out2_full);
            }
        }
        
        output() {
            while(1) {
                /* 输出 OUT1 */
                P(out1_full);
                从 OUT1 取出数据打印;
                V(out1_empty);
                
                /* 输出 OUT2 */
                P(out2_full);
                从 OUT2 取出数据打印;
                V(out2_empty);
            }
        }
    } coend;
}

难度: ⭐⭐⭐ 考点: #生产者消费者模型 #信号量 #PV操作

💡 学习锦囊

📖 相关公式与知识点:

  • 信号量核心定理:P 减 V 加
  • 生产者:P(empty) $\rightarrow$ 放数据 $\rightarrow$ V(full)。
  • 消费者:P(full) $\rightarrow$ 取数据 $\rightarrow$ V(empty)。

思路分析

  • input 生产 IN1/IN2;trans 消费 IN1/IN2 且生产 OUT1/OUT2;output 消费 OUT1/OUT2。
  • 严格按照顺序使用 P/V 逻辑闭合流程。

易错点

注意 trans 进程同时扮演消费者(对 IN)与生产者(对 OUT)双重角色。且必须保证“交替”执行的严格配对关系。

🔄 举一反三
  1. 若缓冲容量由 1 扩展到 $N$,信号量的初值应该做怎样的修改?
    查看练习答案与解析

    答案:所有的 _empty 信号量初值应改为 $N$

  1. (10 分)假设一个计算机系统具有如下特征:处理一次中断平均需要 500 $\mu s$,一次进程调度平均需要花费 1 ms,进程的切换平均需要花费 2 ms。若该计算机系统的定时器每秒发出 120 次时钟中断,忽略其他 I/O 中断的影响,请问: (1) 操作系统将百分之几的 CPU 时间分配给时钟中断处理程序? (2) 如果系统采用时间片轮转调度算法,24 个时钟中断为一个时间片,则操作系统每进行一次进程切换,需要花费百分之几的 CPU 时间? (3) 根据上述结果,请说明为了提高 CPU 的利用率,可以采用什么对策?
查看答案与解析

评分标准

  • 第(1)小问计算过程与答案(3分)
  • 第(2)小问计算过程与答案(4分)
  • 第(3)小问对策合理性分析(3分)

答题区域: [在此处输入你的答案]

标准答案: (1)CPU 分配给时钟中断的时间比

  • 每秒产生 120 次中断,每次中断处理开销为 $500\mu s = 0.5\text{ ms}$
  • 一秒钟内用于处理时钟中断的总时间为 $120 \times 0.5\text{ ms} = 60\text{ ms}$
  • 百分比开销 = $\frac{60\text{ ms}}{1000\text{ ms}} \times 100\% = 6\%$

(2)进程切换所占 CPU 时间比

  • 24 个时钟中断为一个时间片,一次时钟中断的间隔为 $\frac{1}{120}\text{ s} \approx 8.33\text{ ms}$
  • 则一个时间片的长度为 $24 \times 8.33\text{ ms} = 200\text{ ms}$
  • 每次进程切换需要 1 次调度(1 ms)和 1 次上下文切换(2 ms),总共耗时 $1\text{ ms} + 2\text{ ms} = 3\text{ ms}$
  • 时间比开销 = $\frac{3\text{ ms}}{200\text{ ms}} \times 100\% = 1.5\%$

(3)提高 CPU 利用率的对策

  • 适当延长每个时间片包含的时钟中断次数(增大时间片),从而减少频繁的进程调度切换开销。
  • 降低时钟中断的频率(减少每秒中断次数)。
  • 优化内核代码,减少每次中断处理、进程调度以及切换的执行时间。

难度: ⭐⭐⭐ 考点: #时钟中断 #时间片轮转 #CPU利用率计算

💡 学习锦囊

📖 相关公式与知识点:

  • 时间片大小 $q = \text{中断间隔} \times \text{中断次数}$

思路分析

  • 每秒时钟中断占比 = 每次中断时长 $\times$ 频率 / $1\text{s}$
  • 时间片轮转的切换比例 = (调度时长 + 切换时长) / 单个时间片总时长。

易错点

单位转换时要极度细心:$1\text{ ms} = 1000\mu s$。第(2)小问中进程切换总时间必须包含调度和切换两部分。

🔄 举一反三
  1. 假定一个时间片为 100 ms,一次进程切换开销为 5 ms,求切换开销占比。
    查看练习答案与解析

    答案$5\%$

  1. (11分) (1)为满足 $2^{64}$ 地址空间的运行,采用多级页表管理方式,假设页面大小为 8KB,页表中的每个页表项需要占 8B,且最高级页表只能占用一个块存储,则该分页系统至少应采用几级页表? (2)在(1)题的条件下,如果系统没有引入快表,一次内存访存周期为 100ns,则读取一次数据的内存有效访问时间是多少?给出计算过程。 (3)在(1)题的条件下,系统配置了快表,一次内存访存周期为 100ns,一次快表访问时间为 10ns,若快表命中率为 $85\%$,则读取一次数据的内存有效访问时间是多少?给出计算过程。
查看答案与解析

评分标准

  • 第(1)小问页表级数计算(4分)
  • 第(2)小问无快表 EAT 计算(3分)
  • 第(3)小问带快表 EAT 计算(4分)

答题区域: [在此处输入你的答案]

标准答案: (1)计算至少需要的页表级数

  • 页面大小为 $8\text{ KB} = 2^{13}\text{ B}$
  • 页表项大小为 $8\text{ B} = 2^3\text{ B}$
  • 一个物理块(页面)内能容纳的页表项数量 = $\frac{2^{13}\text{ B}}{2^3\text{ B}} = 2^{10}$ 个。
  • 页内地址(位移量)占用 13 位。
  • 每级页表索引需要用 10 位表示。
  • 剩余页号总位数 = $64 - 13 = 51$ 位。
  • 级数计算:$\lceil \frac{51}{10} \rceil = \lceil 5.1 \rceil = 6$ 级。

(2)无快表内存有效访问时间(EAT)

  • 每一次页表查询都需要访问一次内存。
  • 6 级页表,访问页表需 6 次内存访问。加上最终访问数据的 1 次。
  • $\text{EAT} = (6 + 1) \times 100\text{ ns} = 700\text{ ns}$

(3)带快表内存有效访问时间

  • 命中时只需:访问快表(10ns) + 访问内存数据(100ns) = 110ns。
  • 未命中时需:访问快表(10ns) + 6次访问内存查页表(600ns) + 1次访问内存数据(100ns) = 710ns。
  • $\text{EAT} = 85\% \times 110\text{ ns} + 15\% \times 710\text{ ns} = 93.5\text{ ns} + 106.5\text{ ns} = 200\text{ ns}$

难度: ⭐⭐⭐ 考点: #多级页表 #有效访问时间(EAT) #TLB快表

💡 学习锦囊

📖 相关公式与知识点:

  • 页号位数 = $\text{总逻辑地址位数} - \log_2(\text{页面大小})$
  • 页表项数 = $\frac{\text{页面大小}}{\text{页表项字节数}}$

思路分析

最高级页表只能占一个块是级数向上取整的关键约束。

🔄 举一反三
  1. 假设逻辑地址 32 位,页大小 4KB,表项 4B,求页表级数。
    查看练习答案与解析

    答案:2级 解析$4\text{KB}/4\text{B} = 1024$ 项(10位),页内位移 12 位。$(32-12)/10 = 2$

  1. (12 分)某请求分页系统的局部页面置换策略如下:系统从 0 时刻开始扫描,每隔 5 个时间单位扫描一轮驻留集(扫描时间忽略不计),本轮没有被访问过的页框将被系统回收,并放入到空闲页框链尾,其中内容在下一次被分配之前不被清空。当发生缺页时,如果该页曾被使用过且还在空闲页框链表中,则重新放回进程的驻留集中;否则,从空闲页框链表头部取出一个页框分配。假设不考虑其他进程的影响和系统开销,初始化进程驻留集为空。目前系统空闲页框链表中页框号依次为 32,15,21,41。进程 P 依次访问的<页号,访问时刻>是 <1, 1>、❤️, 2>、<0, 4>、<0, 6>、<1, 11>、<2, 14>。回答以下问题,并说明各自的理由。 (1) 访问 <0, 4> 时,对应的页框号是什么?简要给出分析过程。 (2) 访问 <1, 11> 时,对应的页框号是什么?简要给出分析过程。 (3) 访问 <2, 14> 时,对应的页框号是什么?简要给出分析过程。 (4) 该策略是否适合于时间局部性好的程序?为什么?
查看答案与解析

评分标准

  • 第(1)-(3)小问每问给出页框号及分析过程(各3分)
  • 第(4)小问对策合理性说明(3分)

答题区域: [在此处输入你的答案]

标准答案: (1)访问 <0, 4> 时的页框号为 21

  • 初始状态驻留集为空。
  • 0~5 时间单位属于第一轮:
    • 时刻 1 访问页号 1 $\rightarrow$ 缺页,分配空闲链表头 32,驻留集 $\rightarrow \{1:32\}$
    • 时刻 2 访问页号 3 $\rightarrow$ 缺页,分配空闲链表头 15,驻留集 $\rightarrow \{1:32, 3:15\}$
    • 时刻 4 访问页号 0 $\rightarrow$ 缺页,分配空闲链表头 21,驻留集 $\rightarrow \{1:32, 3:15, 0:21\}$

(2)访问 <1, 11> 时的页框号为 32

  • 时刻 5 进行第一轮回收。上一阶段(0~5)访问了 1、3、0,均未被回收。
  • 时刻 6 访问页号 0,命中。
  • 时刻 10 进行第二轮回收。上一阶段(5~10)仅访问了页号 0。因此页号 1、3 被回收。
    • 空闲链表更新为:[41 $\rightarrow$ 32 $\rightarrow$ 15]
  • 时刻 11 访问页号 1 $\rightarrow$ 发生缺页。但页号 1 的数据仍缓存在空闲链表的 32 号页框中。策略规定重新调回,驻留集变为 $\{0:21, 1:32\}$

(3)访问 <2, 14> 时的页框号为 41

  • 时刻 14 访问页号 2 $\rightarrow$ 页号 2 从未被使用。从空闲链表头部(当前为 41)分配页框。

(4)该策略非常适合于时间局部性好的程序

  • 理由:时间局部性好的程序,最近被访问过的页面很快会再次被访问。在该策略下,即使某个页面由于暂时没被访问被放入了空闲链表,也会因为极大概率被再次命中而“无损”地重新召回,极大减少了与磁盘实际进行物理 I/O 交换的频率。

难度: ⭐⭐⭐ 考点: #页面置换算法 #工作集扫描 #缺页中断

💡 学习锦囊

📖 相关公式与知识点:

  • 缓存召回机制(类似于 Linux 中的活跃与非活跃链表 LRU2)。

思路分析

  • 紧扣 5 秒一轮的回收策略,识别哪些页面被“真正抛弃”进了空闲链表,哪些被“迅速召回”。

易错点

一定要严格按照 0-5、5-10、10-15 的时间切片来判定“每轮扫描”的回收边界。

🔄 举一反三
  1. 保持题干条件不变,若访问序列结尾追加了 <3, 16>,此时的页框号是什么?
    查看练习答案与解析

    答案:15 解析:因为页号 3 在时刻 10 的第二轮回收中被推入了空闲链表缓存,虽然时刻 11 召回了 1,但 3 依然静默存在链表中。时刻 16 访问时成功命中缓存,再次召回 15 号物理页框。

  1. (11 分)某文件系统,外存为硬磁盘,物理块大小为 512B,有文件 A 包含 600 条记录,每条记录占 255B,每个物理块存放 2 条记录。文件 A 所在的目录如下图所示,文件目录采用多级树形目录结构,由根目录节点、作为目录文件的中间节点和作为信息文件的树叶组成,每个目录项(FCB)占 127B,每个物理块放 4 个目录项,根目录的第一块常驻内存。试问: (1) 若文件物理结构采用隐式链接,链接指针占 2B,则要将文件 A 全部读入内存,需要存取几次硬磁盘?要求给出计算过程。 (2) 若文件为连续文件,则要读文件 A 的第 400 块,需要存取几次硬磁盘?要求给出计算过程。 (3) 一般为减少读盘次数,可采取什么措施?说明你的措施是如何减少磁盘存取次数的?
查看答案与解析

评分标准

  • 第(1)小问计算过程及答案(4分)
  • 第(2)小问计算过程及答案(3分)
  • 第(3)小问减少读盘措施说明(4分)

答题区域: [在此处输入你的答案]

标准答案: (1)隐式链接下全部读入内存的读盘次数

  • 检索目录路径
    • 根目录第一块常驻内存(0次)。
    • 找到子目录 1 的 FCB:读盘 1 次。
    • 找到子目录 2 的 FCB:读盘 1 次。
    • 找到子目录 3 的 FCB:读盘 1 次。
    • 找到子目录 4 的 FCB:读盘 1 次。
    • 找到文件 A 的 FCB:读盘 1 次。
    • 目录检索小计:5 次。
  • 读取文件块
    • 文件 A 包含 600 条记录,每物理块存放 2 条。
    • 文件物理块总数 = $600 / 2 = 300$ 块。
    • 隐式链接需要逐个读取,数据读盘小计:300 次。
  • 总计$300 + 5 = 305$ 次。

(2)连续文件下读取第 400 块的读盘次数: ::: note 原题勘误 文件 A 总共仅包含 300 个物理块,原题中“第 400 块”超出了文件实际大小。此处按题目“读取任意有效单块”的考核意图进行推导。 :::

  • 检索目录路径依然需要 5 次。
  • 由于是连续文件,在目录中已获得起始物理块号。系统可直接计算目标块的绝对物理块号,并发起单次读盘。
  • 总计$5 + 1 = 6$ 次。

(3)减少读盘次数的有效措施

  • 措施一:引入索引节点(inode)。将 FCB 中的文件名与文件属性(指针、长度)拆分。
    • 效果:目录项体积从 127B 缩减至几十B,一个物理块能装载更多目录项,显著降低检索深度的读盘频次。
  • 措施二:使用文件分配表(FAT)
    • 效果:链接指针全部放在内存的 FAT 表中,检索无需读取数据块追踪。

难度: ⭐⭐⭐ 考点: #树形目录检索 #物理文件结构 #读盘次数

💡 学习锦囊

📖 相关公式与知识点:

  • 多级目录检索次数 = 树的深度(减去内存常驻层)。

思路分析

  • 区分物理结构对数据随机访问特性的硬件束缚:隐式链接 $\rightarrow$ 串行寻找;连续文件 $\rightarrow$ 直接计算。

易错点

不要漏掉“根目录首块常驻内存”所抵扣的 1 次读盘。

🔄 举一反三
  1. 若文件 A 的记录数扩展为 1000 条,隐式链接策略下读取最后一个物理块需要几次读盘?
    查看练习答案与解析

    答案$500 + 5 = 505$ 次。 解析$1000 / 2 = 500$ 块,加上路径检索的 5 次。

  1. (11 分)假设某计算机系统采用 SCAN(扫描算法)磁盘调度策略,使用 2KB 的内存空间记录 16384 个磁盘块的空闲状态。回答下面问题: (1) 请设计一个能满足上述条件的合理磁盘空闲块管理方案。 (2) 设某单面磁盘旋转速度为 6000 转/分,每个磁道有 100 个扇区,磁头在相邻磁道间的平均移动时间为 1ms。若在某时刻,磁头位于 100 号磁道处,并沿着磁道号增大的方向(从外向里)移动,当前磁道号请求队列为 50, 90, 30, 120, 150,对请求队列中的每个磁道需读取 1 个随机分布的扇区,则读完这 5 个扇区共需要多少时间?要求给出计算过程。 (3) 若将磁盘替换为随机访问的 Flash 半导体存储器(如 U 盘、固态硬盘等),是否有比 SCAN 算法性能更高的磁盘调度策略?若有,给出磁盘调度策略的名称并说明理由;若没有,也说明理由。
查看答案与解析

评分标准

  • 第(1)小问空闲块管理方案(3分)
  • 第(2)小问耗时计算过程及答案(5分)
  • 第(3)小问调度策略论证(3分)

答题区域: [在此处输入你的答案]

标准答案: (1)空闲块管理方案:位示图(Bitmap)

  • 16384 个磁盘块,若用一个二进制位(Bit)表示一块的空闲状态(0 为空闲,1 为占用)。
  • 总位数 = 16384 Bits。
  • 转换字节数 = $\frac{16384}{8} = 2048\text{ B} = 2\text{ KB}$
  • 方案:在内存中开辟 2KB 连续数组空间作为位示图,刚好完美匹配题干需求。

(2)读取 5 个扇区的总耗时

  • SCAN 扫描次序:初始在 100 且向外(磁道增加方向),请求队列 [50, 90, 30, 120, 150]
    • 磁道增大阶段:访问 120,再访问 150。
    • 到头调转减小阶段:访问 90 $\rightarrow$ 50 $\rightarrow$ 30。
    • 访问次序为:100 $\rightarrow$ 120 $\rightarrow$ 150 $\rightarrow$ 90 $\rightarrow$ 50 $\rightarrow$ 30
  • 寻道时间计算
    • 移动总磁道数 = $(150 - 100) + (150 - 30) = 50 + 120 = 170$
    • 寻道总耗时 = $170 \times 1\text{ ms} = 170\text{ ms}$
  • 旋转延迟与传输时间计算
    • 转速 6000 转/分 = 100 转/秒,转一圈耗时 10 ms。
    • 平均旋转延迟(转半圈)= $5\text{ ms}$
    • 读取 1 个扇区传输时间 = $\frac{10\text{ ms}}{100\text{ 扇区}} = 0.1\text{ ms}$
    • 5 次独立读取扇区,延迟与传输总耗时 = $5 \times (5 + 0.1)\text{ ms} = 25.5\text{ ms}$
  • 最终总时间 = $170 + 25.5 = 195.5\text{ ms}$

(3)有,更高性能的算法是 FCFS(先来先服务)

  • 理由:Flash 闪存存储器(如 SSD)属于电子式随机存储介质,不存在机械臂寻道延迟以及盘面旋转延迟。在寻道开销为 0 的物理特性下,SCAN 强制电梯排序反而增加了算法处理负荷,最简单的 FCFS 最优。

难度: ⭐⭐⭐ 考点: #位示图 #SCAN磁盘调度 #访问时间计算

💡 学习锦囊

📖 相关公式与知识点:

  • 存取时间 = 寻道时间 + 延迟时间 + 传输时间。

思路分析

  • 位示图转换:$1\text{ 字节} = 8\text{ 位}$
  • SCAN 寻道累加必须明确转向点。

易错点

不要漏掉 SCAN 算法运行到最高磁道 150 之后掉头向下的路径累加。

🔄 举一反三
  1. 保持题设条件不变,若请求队列为 [30, 50, 90],且初始位置在 100 处向磁道减小的方向移动。求 SCAN 的访问顺序。
    查看练习答案与解析

    答案100 $\rightarrow$ 90 $\rightarrow$ 50 $\rightarrow$ 30解析:向减小方向依次扫描即可。

你正在阅读的是会员专属文档,💕 限时特惠进行中
你尚未登录,目前新用户可获3天体验会员,去登录